package com.hzw.saas.api.storage;

import com.hzw.saas.api.storage.bo.ResourceFileStorageBO;

import java.io.OutputStream;

/**
 * 图片型文件缩略图接口
 * 非图片类型文件返回默认缩略图
 *
 * @author zzl
 * @since 2021/12/24
 */
public interface IThumbnailService {

    /**
     * 获取默认大小的缩略图
     *
     * @param pid 文件存储key
     * @param ous 缩略图输出
     */
    void getThumbnail(String pid, OutputStream ous);

    /**
     * 获取指定大小的缩略图
     *
     * @param pid  文件存储key
     * @param ous  缩略图输出
     * @param size 缩略图最长边的尺寸
     */
    void getThumbnail(String pid, OutputStream ous, int size);

    /**
     * @param fileInfo
     * @param ous
     */
    void getThumbnail(ResourceFileStorageBO fileInfo, OutputStream ous);

    /**
     * @param fileInfo
     * @param ous
     * @param size
     */
    void getThumbnail(ResourceFileStorageBO fileInfo, OutputStream ous, int size);

    /**
     * @param pid
     */
    void saveThumbnail(String pid);

    /**
     * @param fileInfo
     */
    void saveThumbnail(ResourceFileStorageBO fileInfo);

    /**
     * @param pid
     * @param size
     */
    void saveThumbnail(String pid, int size);

    /**
     * @param fileInfo
     * @param size
     */
    void saveThumbnail(ResourceFileStorageBO fileInfo, int size);

    void execThumbnailTask(Integer threadCount);

}
